fix: add 'tabbar' to role type for accessibility#54512
Conversation
|
Hi @hayleyyryan! Thank you for your pull request and welcome to our community. Action RequiredIn order to merge any pull request (code, docs, etc.), we require contributors to sign our Contributor License Agreement, and we don't seem to have one on file for you. ProcessIn order for us to review and merge your suggested changes, please sign at https://code.facebook.com/cla. If you are contributing on behalf of someone else (eg your employer), the individual CLA may not be sufficient and your employer may need to sign the corporate CLA. Once the CLA is signed, our tooling will perform checks and validations. Afterwards, the pull request will be tagged with If you have received this in error or have any questions, please contact us at cla@meta.com. Thanks! |
|
Thank you for signing our Contributor License Agreement. We can now accept your code for this (and any) Meta Open Source project. Thanks! |
|
This PR is stale because it has been open for 180 days with no activity. It will be closed in 7 days unless you comment on it or remove the "Stale" label. |
popsiclelmlm
left a comment
There was a problem hiding this comment.
This looks directionally right, but I think it needs a couple more files before it can land cleanly.
role is typed in more than the hand-written ViewAccessibility.d.ts file:
packages/react-native/Libraries/Components/View/ViewAccessibility.jshas the FlowRoleunion for the JS source, and it currently still hastab->tablewithouttabbar.packages/react-native/ReactNativeApi.d.tsis the generated public API snapshot, and itsRoleunion also still lacks"tabbar".
So this PR should update the Flow source type and run yarn build-types / yarn build-types --validate so the API snapshot is updated too. Otherwise TypeScript users may be fixed in one declaration file, but the checked public API surface will still be out of sync.
Also, the changelog entry appears to be inside the template HTML comment. It should be outside the comment block, e.g. [IOS] [FIXED] - Add tabbar to the role type for accessibility.
Summary:
The
tabbarrole was removed fromAccessibilityRolein 2018 (commit f39d092) as it was only available on iOS 10+. It was later added back toAccessibilityRoleonce the minimum iOS version increased.However, when the separate
Roletype was introduced in 2022 for the role prop,tabbarwas not included despite being present inAccessibilityRole. This inconsistency causes TypeScript compilation errors when trying to use role="tabbar" on components, even though it's a valid and working accessibility role that exists inAccessibilityRole.This PR adds
tabbarto the Role type definition to maintain consistency between AccessibilityRole and Role, allowing developers to use this role without TypeScript errors and for accurate announcements for screen reader users.Changelog:
Test Plan:
Before this change, the following TypeScript code would fail compilation:
After this change, the code compiles successfully. The
tabbarrole also already exists inAccessibilityRole(line 213 ofViewAccessibility.d.ts) and works correctly at runtime on all currently supported iOS versions.